/*
 * @LastEditors: Please set LastEditors
 * @Date: 2023-01-11 16:12:51
 */
//1.引入express
const express = require('express');

//2.创建应用对象
const app = express();

//3.创建路由规则
app.get('/server', (request, response) => {
  // ! 设置响应头 设置允许跨域
  response.setHeader('Access-Control-Allow-Origin', '*');

  // 设置响应体
  response.send('hello express get');
});

app.post('/server', (request, response) => {
  // ! 设置响应头 设置允许跨域
  response.setHeader('Access-Control-Allow-Origin', '*');

  // 设置响应体
  response.send('hello express post');
});

app.all('/json-server', (request, response) => {
  // ! 设置响应头 设置允许跨域
  response.setHeader('Access-Control-Allow-Origin', '*');
  // ! 响应头
  response.setHeader('Access-Control-Allow-Headers', '*');
  // 响应一个数据
  const data = {
    name: 'luck'
  }
  // 对对象进行字符串转换
  let str = JSON.stringify(data);
  // 设置响应体
  response.send(str);
});

// IE
app.get('/ie', (request, response) => {
  // ! 设置响应头 设置允许跨域
  response.setHeader('Access-Control-Allow-Origin', '*');
  // 设置响应体
  response.send('ie');
});

// 延迟响应
app.get('/delay', (request, response) => {
  // ! 设置响应头 设置允许跨域
  response.setHeader('Access-Control-Allow-Origin', '*');
  setTimeout(() => {
    // 设置响应体
    response.send('延迟响应');
  }, 3000);
});

// JQuery
app.all('/jquery-server', (request, response) => {
  // ! 设置响应头 设置允许跨域
  response.setHeader('Access-Control-Allow-Origin', '*');
  const data = { name: 'luck' }
  // 设置响应体
  // response.send('jquery-server');
  response.send(JSON.stringify(data));
});

// axios
app.all('/axios-server', (request, response) => {
  // ! 设置响应头 设置允许跨域
  response.setHeader('Access-Control-Allow-Origin', '*');
  const data = { name: 'luck' }
  // ! 响应头
  response.setHeader('Access-Control-Allow-Headers', '*');
  // 设置响应体
  // response.send('jquery-server');
  response.send(JSON.stringify(data));
});

// fetch
app.all('/fetch-server', (request, response) => {
  // ! 设置响应头 设置允许跨域
  response.setHeader('Access-Control-Allow-Origin', '*');
  const data = { name: 'luck' }
  // ! 响应头
  response.setHeader('Access-Control-Allow-Headers', '*');
  // 设置响应体
  // response.send('jquery-server');
  response.send(JSON.stringify(data));
});

// jsonp
app.all('/jsonp-server', (request, response) => {
  // 设置响应体
  // response.send("console.log('jsonp-server')");
  const data = {
    name: 'lucy',
    age: 16
  }
  // 将数据转换为字符串
  let str = JSON.stringify(data)
  response.end(`handle(${str})`);
});

// 用户名检测是否存在
app.all('/check-username', (request, response) => {
  // 设置响应体
  // response.send("console.log('jsonp-server')");
  const data = {
    exist: 1,
    msg: '用户名已经存在'
  }
  // 将数据转换为字符串
  let str = JSON.stringify(data)
  response.end(`handle(${str})`);
});

// cors
app.all('/cors-server', (request, response) => {
  // ! 设置响应头 设置允许跨域
  response.setHeader('Access-Control-Allow-Origin', '*');
  // ! 响应头
  response.setHeader('Access-Control-Allow-Headers', '*');
  // 设置响应体
  response.send("cors-server");
});


//4.监听端口启动服务
app.listen(8000, () => {
  console.log('服务已经启动，8000 端口监听中...');
})

// todo npm init -y 生成package文件

// todo npm i express 安装express

// todo npm i -g nodemon   自动启动express
